home *** CD-ROM | disk | FTP | other *** search
/ Macworld Expo - Develope…Central & Net Innovations / Developer Central and Net Innovators (MacWorld Expo) (January 1999).iso / Developer Central / Bowers Development / Demo AppMaker / Examples / plain C OS8 / Everything / EverythingDoc.c < prev    next >
Encoding:
Text File  |  1998-10-29  |  4.7 KB  |  265 lines  |  [TEXT/CWIE]

  1. // EverythingDoc.c -- document-level functions
  2.  
  3. #include <Types.h>
  4. #include <Events.h>
  5. #include <Menus.h>
  6. #include <stdlib.h>
  7.  
  8. #include "Globals.h"
  9. #include "ResourceDefs.h"
  10. #include "Dispatcher.h"
  11. #include "Miscellany.h"
  12. #include "EverythingEngine.h"
  13.  
  14. #include "ModalButtons.h"
  15. #include "ModalCheckboxes.h"
  16. #include "ModalRadios.h"
  17. #include "ModalText.h"
  18. #include "ModalStuff.h"
  19. #include "ModalBars.h"
  20. #include "DDocData.h"
  21. #include "Buttons.h"
  22. #include "DDocData.h"
  23. #include "Checkboxes.h"
  24. #include "DDocData.h"
  25. #include "Radios.h"
  26. #include "DDocData.h"
  27. #include "EditText.h"
  28. #include "DDocData.h"
  29. #include "Stuff.h"
  30. #include "DDocData.h"
  31. #include "Bars.h"
  32. #include "EverythingDoc.h"
  33.  
  34. static    EverythingEngine*    GetEngine    (AMDoc*        self);
  35.  
  36. static    void    DoModalButtons    (AMDoc*        self);
  37. static    void    DoModalCheckboxes    (AMDoc*        self);
  38. static    void    DoModalRadios    (AMDoc*        self);
  39. static    void    DoModalText    (AMDoc*        self);
  40. static    void    DoModalStuff    (AMDoc*        self);
  41. static    void    DoModalMoreStuff    (AMDoc*        self);
  42.  
  43. //----------
  44. EverythingDoc*        NewEverythingDoc ()
  45. {
  46.     EverythingDoc*        doc;
  47.  
  48.     doc = (EverythingDoc*)malloc (sizeof (EverythingDoc));
  49.     EverythingDoc_Init (doc);
  50.     SetClassID (doc, classEverythingDoc);
  51.  
  52.     return doc;
  53. }
  54.  
  55. //----------
  56. void    DeleteDoc (
  57.     AMDoc*        doc)
  58. {
  59.     EverythingDoc_Free ((EverythingDoc*)doc);
  60.     free (doc);
  61. }
  62.  
  63. //----------
  64. void    EverythingDoc_Init (
  65.     EverythingDoc*        self)
  66. {
  67.     ((AMDoc*)self)->mEngine = (AMEngine*) NewEverythingEngine ();
  68.  
  69.     self->mButtonsPtr = nil;
  70.     self->mCheckboxesPtr = nil;
  71.     self->mRadiosPtr = nil;
  72.     self->mEditTextPtr = nil;
  73.     self->mStuffPtr = nil;
  74.     self->mBarsPtr = nil;
  75. }
  76.  
  77. //----------
  78. void    EverythingDoc_Free (
  79.     EverythingDoc*        self)
  80. {
  81. }
  82.  
  83. //----------
  84. EverythingEngine*        GetEngine (
  85.     AMDoc*        self)
  86. {
  87.     return (EverythingEngine*) (self->mEngine);
  88. }
  89.  
  90. //----------
  91. void    OpenWindows (
  92.     AMDoc*        self)
  93. {
  94.     EverythingEngine*        engine = GetEngine (self);
  95.  
  96.     // replace this code to get data from someplace useful
  97.  
  98.     Buttons_Create (self, GetDocData (engine));
  99.     Checkboxes_Create (self, GetDocData (engine));
  100.     Radios_Create (self, GetDocData (engine));
  101.     EditText_Create (self, GetDocData (engine));
  102.     Stuff_Create (self, GetDocData (engine));
  103.     Bars_Create (self, GetDocData (engine));
  104. }
  105.  
  106. //----------
  107. Boolean        WouldCloseDoc (
  108.     AMDoc*        doc,
  109.     WindowPtr    inWindPtr)
  110. {
  111.     EverythingDoc*        self = (EverythingDoc*) doc;
  112.     short        numOpen = 0;
  113.  
  114.     if (self->mButtonsPtr != nil)        numOpen++;
  115.     if (self->mCheckboxesPtr != nil)        numOpen++;
  116.     if (self->mRadiosPtr != nil)        numOpen++;
  117.     if (self->mEditTextPtr != nil)        numOpen++;
  118.     if (self->mStuffPtr != nil)        numOpen++;
  119.     if (self->mBarsPtr != nil)        numOpen++;
  120.  
  121.     return (numOpen <= 1);
  122. }
  123.  
  124. //----------
  125. void    DoModalButtons (
  126. AMDoc*        self)
  127. {
  128.     if (GetModalButtons ()) {
  129.         /* do something */
  130.     }
  131. }
  132.  
  133. //----------
  134. void    DoModalCheckboxes (
  135. AMDoc*        self)
  136. {
  137.     DModalCheckboxesData*        data;
  138.  
  139.     data = NewDModalCheckboxesData ();
  140.  
  141.     // initialize data
  142.  
  143.     if (GetModalCheckboxes (data)) {
  144.         // user clicked OK, so
  145.         // do something with data
  146.     }
  147.     DeleteDModalCheckboxesData (data);
  148. }
  149.  
  150. //----------
  151. void    DoModalRadios (
  152. AMDoc*        self)
  153. {
  154.     DModalRadiosData*        data;
  155.  
  156.     data = NewDModalRadiosData ();
  157.  
  158.     // initialize data
  159.  
  160.     if (GetModalRadios (data)) {
  161.         // user clicked OK, so
  162.         // do something with data
  163.     }
  164.     DeleteDModalRadiosData (data);
  165. }
  166.  
  167. //----------
  168. void    DoModalText (
  169. AMDoc*        self)
  170. {
  171.     DModalTextData*        data;
  172.  
  173.     data = NewDModalTextData ();
  174.  
  175.     // initialize data
  176.  
  177.     if (GetModalText (data)) {
  178.         // user clicked OK, so
  179.         // do something with data
  180.     }
  181.     DeleteDModalTextData (data);
  182. }
  183.  
  184. //----------
  185. void    DoModalStuff (
  186. AMDoc*        self)
  187. {
  188.     DModalStuffData*        data;
  189.  
  190.     data = NewDModalStuffData ();
  191.  
  192.     // initialize data
  193.  
  194.     if (GetModalStuff (data)) {
  195.         // user clicked OK, so
  196.         // do something with data
  197.     }
  198.     DeleteDModalStuffData (data);
  199. }
  200.  
  201. //----------
  202. void    DoModalMoreStuff (
  203. AMDoc*        self)
  204. {
  205.     DModalBarsData*        data;
  206.  
  207.     data = NewDModalBarsData ();
  208.  
  209.     // initialize data
  210.  
  211.     if (GetModalBars (data)) {
  212.         // user clicked OK, so
  213.         // do something with data
  214.     }
  215.     DeleteDModalBarsData (data);
  216. }
  217.  
  218. //----------
  219. Boolean        DoDocCommand (
  220.     AMDoc*        self,
  221.     long        inCommand)
  222. {
  223.     Boolean        result = true;
  224.  
  225.     switch (inCommand) {
  226.         case cmdSave:
  227.                 DoSave (self);
  228.             break;
  229.         case cmdSaveAs:
  230.                 DoSaveAs (self);
  231.             break;
  232.         case cmdRevert:
  233.                 DoRevert (self);
  234.             break;
  235.         case cmdPageSetup:
  236.                 DoPageSetup (self);
  237.             break;
  238.         case cmdPrint:
  239.                 DoPrint (self);
  240.             break;
  241.         case cmdModalButtons:
  242.                 DoModalButtons (self);
  243.             break;
  244.         case cmdModalCheckboxes:
  245.                 DoModalCheckboxes (self);
  246.             break;
  247.         case cmdModalRadios:
  248.                 DoModalRadios (self);
  249.             break;
  250.         case cmdModalText:
  251.                 DoModalText (self);
  252.             break;
  253.         case cmdModalStuff:
  254.                 DoModalStuff (self);
  255.             break;
  256.         case cmdModalMoreStuff:
  257.                 DoModalMoreStuff (self);
  258.             break;
  259.  
  260.         default:
  261.                 result = false;
  262.     } // switch
  263.     return result;
  264. }
  265.